import Request from 'luch-request'

// 刷新token用于的请求接口
const http2 = new Request({
	baseURL: "https://letaoapi.jxsaichuang.com",
	timeout: 5000,
})

const http = new Request({
	baseURL: "https://letaoapi.jxsaichuang.com",
	timeout: 5000,
	header: {
		'Content-Type': 'application/json'
	}
})

// 请求拦截器
http.interceptors.request.use(
	(config) => {
		// 获取本地存储的token
		const token = uni.getStorageSync("token")
		// 如果有token的话则
		if (token) {
			// 在请求头上携带上token
			config.header['token'] = token
		}
		return config
	}
)

// 响应拦截器
http.interceptors.response.use(
	(response) => {
		return response.data
	},
	// 刷新token需要在响应失败的情况下进行的
	async (error) => {
		// 如果401的话，则获取新的token
		if (error.statusCode === 401) {
			// 获取本地存储的refreshToken
			const refreshToken = uni.getStorageSync("refreshToken")
			// 发起请求，携带refreshToken
			let result = await http2.post('/api/refreshToken', {
				refreshToken
			})
			// 本地存储拿到刷新后的token和刷新后得到的新数据
			uni.setStorageSync("token", result.data.token)
			uni.setStorageSync("userInfo", result.data.userInfo)
			// 一定要返回出去
			return http.request(error.config)
		} else {
			return Promise.reject(error)
		}
	}
)

export default http